package com.tbit.main.pojo;


import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;

/**
 * 终端位置
 *
 * @author Leon
 * 2017年5月10日 下午2:56:48
 */
@Data
public class TerPosition implements Serializable {

    private static final long serialVersionUID = 1879657895632571738L;

    /**
     * 设备id
     */
    private Integer machineId;
    /**
     * 设备编号
     */
    private String machineNO;
    /**
     * 时间
     */
    private String dt;
    /**
     * 时间
     */
    private Date dateTime;
    /**
     * 定位类型
     */
    private Integer pointType;
    /**
     * 经度
     */
    private Double lon;
    /**
     * 纬度
     */
    private Double lat;
    /**
     * 校准后经度
     */
    private Double lonC;
    /**
     * 校准后纬度
     */
    private Double latC;
    /**
     * 扩展字段
     */
    private String exData;

    /**
     * 运营区域id
     */
    private Integer accountId;
    /**
     * 用户编号
     */
    private String userCode;
    /**
     * 里程（米）
     */
    private Integer mile;
    /**
     * 车辆状态
     */
    private Integer carStatus;
    /**
     * 车辆的电压
     * */
    private double cartV;

    /**
     * 电量
     * */
    private Integer soc;
    public double getCartV() {
        if (StringUtils.isBlank(exData) || !exData.contains("V=")){
            return 0;
        }
        cartV = new ArrayList<>(Arrays.asList(exData.split(";"))).stream().filter(ex -> {
            return ex.contains("V=");
        }).map(ex -> {
            String[] split = ex.split("=");
            double v = Double.parseDouble(split[1]);
            BigDecimal bd = new BigDecimal(v / 1000).setScale(2, RoundingMode.HALF_UP);
            return bd.doubleValue();
        }).findFirst().orElse(0d);
        return cartV;
    }
}
